package pe.edu.upc.jtigers.svpn.data.implement;

import java.util.ArrayList;
import java.util.Collection;

import org.springframework.stereotype.Repository;

import pe.edu.upc.jtigers.svpn.aplication.excepcion.DAOExcepcion;
import pe.edu.upc.jtigers.svpn.data.common.BaseDao;
import pe.edu.upc.jtigers.svpn.data.queryable.CompraQueryable;
import pe.edu.upc.jtigers.svpn.domain.data.CompraDao;
import pe.edu.upc.jtigers.svpn.domain.model.Compra;
import pe.edu.upc.jtigers.svpn.domain.model.PlanNegocio;

@Repository
public class CompraDaoImpl extends BaseDao<Compra> implements CompraDao {

	@Override
	public Collection<PlanNegocio> listarCompras(int idEmprendedor)
			throws DAOExcepcion {
		Collection<PlanNegocio> planes = null;
		try {
			Compra compra = new Compra();
			compra.setIdComprador(idEmprendedor);
			Collection<Compra> entities = this.getResultList(
					CompraQueryable.BUSCAR, compra);
			planes = new ArrayList<PlanNegocio>();
			for (Compra bean : entities) {
				planes.add(bean.getPlanNegocio());
			}

		} catch (Exception e) {
			throw new DAOExcepcion(e);
		}
		return planes;
	}

	@Override
	public Compra registrarCompra(Compra compra) throws DAOExcepcion {
		try {
			if (compra.getIdCompra() == 0) {
				entityManager.persist(compra);
			} else {
				entityManager.merge(compra);
			}
		} catch (Exception e) {
			throw new DAOExcepcion(e);
		}
		return compra;
	}

	@Override
	public Compra validaCompra(Compra compra) throws DAOExcepcion {
		try {
			compra = this.getSingleResult(CompraQueryable.VALIDAR, compra);
		} catch (Exception e) {
			throw new DAOExcepcion(e);
		}
		return compra;
	}

	@Override
	public Compra obtenerCompra(int id) throws DAOExcepcion {
		try {
			return entityManager.find(Compra.class, id);
		} catch (Exception e) {
			throw new DAOExcepcion(e.getMessage());
		}
	}
}
